VPC Lambdaで IPv6のアウトバウンド通信が可能になりました
2023年10月12日、
AWS Lambdaのアップデートで、 VPC を利用する Lambda が IPv6 のアウトバウンド通信をサポートしました。
今回、VPC Lambdaから IPv6 のアウトバウンド通信用の egress-only internet gateway を経由して、 シークレットマネージャのエンドポイントが利用できる事を確認する機会がありましたので、紹介させて頂きます。
VPC
VPCの作成
ウィザードを利用して、検証用のVPCを作成しました。
Amazon 提供の IPv6アドレスの割当と、 Egress Only インターネットゲートウェイを有効、NAT Gatewayは存在しないVPCを作成しました。
ルートテーブル
プライベートサブネットで利用するルートテーブル、 デフォルトルートは IPv6用の Egress Only インターネットゲートウェイのみを設定。 IPv4アドレスでのVPC外部への通信はできない環境としました。
Lambda
VPC設定
東京リージョン含む、VPC Lambdaで IPv6のアウトバウンド通信がサポートされたリージョンでは、 「デュアルスタックのサブネットの IPv6 トラフィックを許可」の設定が可能になりました。
- 「デュアルスタックのサブネットの IPv6 トラフィックを許可」をチェック
- Egress Only インターネットゲートウェイのみ利用可能なプライベートサブネットを指定しました。
検証コード
Boto3(Python)を利用。 DualStack、IPv6をサポートしている secretsmanager のAPIを実行するコードを用意しました。
import boto3 client = boto3.client('secretsmanager') def lambda_handler(event, context): response = client.list_secrets() print(response)
テスト
シークレットマネージャのAPI、実行結果を得る事ができました。
IPv6 トラフィックを許可なし
「デュアルスタックのサブネットの IPv6 トラフィックを許可」のチェックを外した場合、 エラー(タイムアウト)となりました。
まとめ
これまで、VPC起動のLambdaが、VPC外のエンドポイントにアクセスするためには、 NAT Gateway、 VPCエンドポイントなどを経由する必要がありました。
NAT Gateway を 大量の通信が発生するトラフィックで利用した場合、処理データ 1 GB あたり 0.045USD(北米価格)の従量課金が発生。 また、可用性を担保するためルチAZ配置した場合、維持管理コストが負担となる事がありました。 IPv6 のEgress Only インターネットゲートウェイは、従来のインタネットゲートウェイ(IGW)と同等のコストで利用可能です。
VPC Lambdaから DualStack対応済み、IPv6をサポートするAPIを利用する場合には、今回のアップデートを是非お試しください。